﻿using shopLinhOnline.Models.ACK;
using shopLinhOnline.Models.DAO;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace shopLinhOnline.Models
{
    public static class DAOManagement
    {
        #region "[Define]"
        private static SanPhamDAO m_sanpham = new SanPhamDAO();
        private static NguoiDungDAO m_nguoidung = new NguoiDungDAO();
        private static HinhSanPhamDAO m_hinhsanpham = new HinhSanPhamDAO();
        #endregion

        #region "[FUNCTION OF HOADON]"
        #endregion

        #region "[FUNCTION OF NGUOIDUNG]"
        /// <summary>
        /// Đăng nhập
        /// </summary>
        /// <param name="_username">tên đăng nhập</param>
        /// <param name="_password">mật khẩu</param>
        /// <returns></returns>
        public static NguoiDung Login(string _username, string _password)
        {
            return m_nguoidung.Login(_username, _password);
        }
        /// <summary>
        /// Lấy danh sách các đối tượng người dùng
        /// </summary>
        /// <returns></returns>
        public static List<NguoiDung> NguoiDung_GetAll()
        {
            return m_nguoidung.GetAll();
        }
        public static bool NguoiDung_Delete(int _id)
        {
            return m_nguoidung.Delete(_id);
        }
        /// <summary>
        /// Thêm mới một đối tượng người dùng
        /// </summary>
        /// <param name="_obj">đối tượng người dùng cần thêm mới</param>
        /// <returns></returns>
        public static NguoiDungACK  NguoiDung_Insert(NguoiDung _obj)
        {
            return m_nguoidung.Insert(_obj);
        }
        /// <summary>
        /// Lấy thông tin người dùng dựa trên khóa chính
        /// </summary>
        /// <param name="_id"></param>
        /// <returns></returns>
        public static NguoiDung NguoiDung_SelectByID(int _id)
        {
            return m_nguoidung.SelectByPrimaryKey(_id);
        }
        #endregion

        #region "[FUNCTION OF PHANQUYEN]"
        #endregion

        #region "[FUNCTION OF QUYENNGUOIDUNG]"
        #endregion

        #region "[FUNCTION OF SANPHAM]"
        /// <summary>
        /// Lấy danh sách các đối tượng sản phẩm
        /// </summary>
        /// <returns></returns>
        public static List<SanPham> SanPham_GetAll()
        {
            return m_sanpham.GetAll();
        }
        /// <summary>
        /// Lấy 1 đối tượng sản phẩm dựa trên khóa chính
        /// </summary>
        /// <param name="_id">Khóa chính</param>
        /// <returns></returns>
        public static SanPham SanPham_SelectByID(int _id)
        {
            return m_sanpham.SelectByPrimarykey(_id);
        }
        /// <summary>
        /// Thêm mới một đối tượng sản phẩm
        /// </summary>
        /// <param name="_obj">đối tượng sản phẩm cần thêm mới</param>
        /// <returns></returns>
        public static int SanPham_Insert(SanPham _obj)
        {
            return m_sanpham.Insert(_obj);
        }

        /// <summary>
        /// Xóa sản phầm theo khóa chính
        /// </summary>
        /// <param name="_id">mã sản phẩm</param>
        /// <returns></returns>
        public static bool SanPham_Delete(int _id)
        {
            return m_sanpham.Delete(_id);
        }

        /// <summary>
        /// cập nhật đối tượng sản phẩm
        /// </summary>
        /// <param name="_obj">đối tượng sản phẩm cần cập nhật</param>
        /// <returns></returns>
        public static bool SanPham_Update(SanPham _obj)
        {
            return m_sanpham.Update(_obj);
        }
        /// <summary>
        /// Lấy danh sách các đối tượng sản phầm ACK chứa sẵn các
        /// đối tượng hình ảnh
        /// </summary>
        /// <returns></returns>
        public static List<SanPhamACK> SanPhamACK_GetAll()
        {
            List<SanPhamACK> lstResult = new List<SanPhamACK>();
            //lấy danh sách các đối tượng sãn phẩm
            List<SanPham> lstSP = SanPham_GetAll();
            foreach (SanPham item in lstSP)
            { 
                SanPhamACK info = new SanPhamACK();
                info.m_SanPhamInfo = item;
                //lấy danh sách các đối tượng hình sản phẩm
                info.m_lstHinhAnh = HinhSanPham_GetAllBySanPhamID(item.ID);
                lstResult.Add(info);
            }
            return lstResult;
        }
        #endregion

        #region "[FUNCTION OF TAIKHOANNGANHANG]"
        #endregion

        #region "[FUNCTION OF HINHNGUOIDUNG]"
        /// <summary>
        /// Lấy danh sách các đối tượng hình sản phẩm dựa trên mã sản phẩm
        /// </summary>
        /// <param name="_sanphamID"></param>
        /// <returns></returns>
        public static List<HinhSanPham> HinhSanPham_GetAllBySanPhamID(int _sanphamID)
        {
            return m_hinhsanpham.GetAllBySanPhamID(_sanphamID);
        }
        /// <summary>
        /// Xóa đối tượng hình sản phẩm theo khóa chính
        /// </summary>
        /// <param name="_id"></param>
        /// <returns></returns>
        public static bool HinhSanPham_Delete(int _id)
        {
            return m_hinhsanpham.Delete(_id);
        }
        #endregion
    }
}